<?
//Label 0.1.1
class label{
	private $id;
	private $name;
	public function __construct($key=0, $name=''){
		global $sql;
		if($key===0){
			$this->id=0;
			$this->name='';
		}
		elseif(is_numeric($key)){
			$this->id=$key;
			$this->name=$name;
		}
		else{
			$this->name=$key;
			$this->id=$sql->select_each('labels', 'id', array('name'=>$key), '', '', 1);
		}
	}
	//Get label value
	public function get($lng_id=''){
		global $sql, $kernel;
		if($lng_id=='') $lng_id=$kernel->lang->id;
		if($this->id){
			return $sql->select_each('labels', 'value', array('id'=>$this->id, 'lng_id'=>$lng_id), "", "", 1);
		}
		return '';
	}
	//Update label
	public function edit($value, $lng_id='', $name=''){
		global $sql, $kernel;
		if($this->id){
			$values=array();
			if($value) $values['value']=$value;
			if($name) $values['name']=$name;
			elseif($this->name) $values['name']=$this->name;
			
			$where=array('id'=>$this->id);
			if($lng_id!='*'){
				if($lng_id=='') $where['lng_id']=$kernel->lang->id;
				else $where['lng_id']=$lng_id;
			}
			if($sql->update('labels', $values, $where, 1)){
				return $this->id;
			}
			else{
				print($sql->last());
				return 0;
			}
		}
		return 0;
	}
	//Add label
	public function add($value, $lng_id=''){
		global $sql, $kernel;
		if($lng_id=='') $lng_id=$kernel->lang->id;
		if($this->id){
			return $sql->insert('labels', array('id'=>$this->id, 'name'=>$this->name, 'value'=>$value, 'lng_id'=>$lng_id));
		}
		elseif($this->name){
			$this->id=$sql->insert('labels', array('name'=>$this->name, 'value'=>$value, 'lng_id'=>$lng_id));
			return $this->id;
		}
		else{
			$this->id=$sql->insert('labels', array('value'=>$value, 'lng_id'=>$lng_id));
			return $this->id;
		}
		
	}
	//Delete label
	function del($lng_id='*'){
		global $sql, $kernel;
		$values=array();
		if($this->id) $values['id']=$this->id;
		elseif($this->name) $values['name']=$this->name;
		else return '';
		if($lng_id!='*'){
			if($lng_id) $values['lng_id']=$lng_id;
			else $values['lng_id']=$kernel->lang->id;
		}
		return $sql->delete('labels', $values);
	}
	
	function set($value, $lng_id=''){
		global $sql;
		if($this->id&&$sql->count('labels', array('id'=>$this->id, 'lng_id'=>$lng_id))){
			return $this->edit($value, $lng_id);
		}
		elseif($this->name){
			return $this->add($value, $lng_id);
		}
	}
	
	/*
	  @ GET/SET private properties
	*/
	public function __get($var){
	    return $this->$var;
	}
	public function __set($key, $val){
		$this->$key=$val;
	}
}
?>